from django.db import models
from utils.models import BaseModel
from users.models import User,Address
from goods.models import SKU

# Create your models here.

# 订单基本信息
class OrderInfo(BaseModel):
    """
    订单信息
    """
    PAY_METHODS_ENUM = {
        'CASH':1,
        'ALIPAY':2
    }

    PAY_METHODS_CHOICES = (
        (1,"货到付款"),
        (2,"支付宝"),
    )

    ORDER_STATUS_ENUM = {
        'UNPAID':1,
        'UNSEND':2,
        'UNRECEIVED':3,
        'UNCOMMENT':4,
        'FINISHED':5
    }

    ORDER_STATUS_CHOICES = (
        (1,"待支付"),
        (2,"待发货"),
        (3,"待收货"),
        (4,"待评价"),
        (5,"已完成"),
        (6,"以取消"),
    )

    order_id = models.CharField(max_length=64,primary_key=True,verbose_name="订单号")
    user =models.ForeignKey(User,on_delete=models.PROTECT,verbose_name="下单用户")
    address = models.ForeignKey(Address,on_delete=models.PROTECT,verbose_name="收货地址")
    total_count = models.IntegerField(default=1,verbose_name="商品总数")
    total_amount = models.DecimalField(max_digits=10,decimal_places=2,verbose_name="商品总金额")
    freight = models.DecimalField(max_digits=10,decimal_places=2,verbose_name="运费")
    pay_method = models.SmallIntegerField(choices=PAY_METHODS_CHOICES,default=1,verbose_name="支付方式")
    status =models.SmallIntegerField(choices=ORDER_STATUS_CHOICES,default=1,verbose_name="订单状态")

    class Meta:
        db_table = "tb_order_info"
        verbose_name = '订单基本信息'
        verbose_name_plural = verbose_name


class OrderGoods(BaseModel):
    """
    订单商品列表
    """
    SCORE_CHOICES = (
        (0,'0分'),
        (1,'20分'),
        (2,'40分'),
        (3,'60分'),
        (4,'80分'),
        (5,'100分'),
    )

    order = models.ForeignKey(OrderInfo,related_name='skus',on_delete=models.CASCADE,verbose_name="订单")
    sku = models.ForeignKey(SKU,on_delete=models.PROTECT,verbose_name="订单商品")
    count = models.IntegerField(default=1,verbose_name="数量")
    price = models.DecimalField(max_digits=10,decimal_places=2,verbose_name="单价")
    comment = models.TextField(default="",verbose_name="评价信息")
    score = models.SmallIntegerField(choices=SCORE_CHOICES,default=5,verbose_name="满意度评分")
    is_anonymous = models.BooleanField(default=False,verbose_name="是否匿名评价")
    is_commented = models.BooleanField(default=False,verbose_name="是否评价了")

    class Meta:
        db_table = "tb_order_goods"
        verbose_name = '订单商品'
        verbose_name_plural = verbose_name






































































